/*
 * Wazuh databaseFeedManager
 * Copyright (C) 2015, Wazuh Inc.
 * December 27, 2023.
 *
 * This program is free software; you can redistribute it
 * and/or modify it under the terms of the GNU General Public
 * License (version 2) as published by the FSF - Free Software
 * Foundation.
 */
#ifndef _MOCK_UNIXSOCKETREQUEST_HPP
#define _MOCK_UNIXSOCKETREQUEST_HPP

#include "gmock/gmock.h"
#include "gtest/gtest.h"

#include "IURLRequest.hpp"
#include "json.hpp"
#include "singleton.hpp"

/**
 * @class MockUnixSocketRequest
 *
 * @brief Mock class for UNIXSocketRequest.
 */
class MockUnixSocketRequest final : public Singleton<MockUnixSocketRequest>
{
public:
    /**
     * @brief Mock method for put.
     */
    MOCK_METHOD(void,
                put,
                (const HttpUnixSocketURL& url,
                 const nlohmann::json& data,
                 const std::function<void(const std::string&)>& successCallback,
                 const std::function<void(const std::string&, const long)>& errorCallback),
                (const));

    /**
     * @brief Mock method for get.
     */
    MOCK_METHOD(void,
                get,
                (const HttpUnixSocketURL& url,
                 const std::function<void(const std::string&)>& successCallback,
                 const std::function<void(const std::string&, const long)>& errorCallback),
                (const));
};

#endif // _MOCK_UNIXSOCKETREQUEST_HPP
